package com.wjm.blog.common.util;

import lombok.extern.log4j.Log4j2;

import java.io.File;
import java.util.Arrays;

/**
 * @Author Pretty Boy
 * @Description TODO
 * @Date 2023/08/25/0:00
 */
@Log4j2
public class AutoDeleteFileUtil extends Thread {

    private final static String dirPathDel = "C:\\home\\data2"; //要清理的文件目录文件夹

    public static void main(String[] args) {

        deleteByDay(dirPathDel, 0);

    }

    public static void deleteByDay(String dirPathDel, Integer day) {

        File file = new File(dirPathDel);
        if (file.exists()) { //文件或文件夹是否存在
            if (file.isDirectory()) { //判断是不是目录
                info(file, day);
            }
        }
    }

    public static void info(File file, Integer day) {
        //得到文件里面全部的文件及文件夹
        File[] files = file.listFiles();

        log.info("files:{}", Arrays.asList(files));
        //遍历files里面的全部文件及文件夹
        for (File f : files) {
            //得到绝对路径下的文件及文件夹
            File absFile = f.getAbsoluteFile();

            //计算时间
//            long day = 7;

            long hour = 24;

            long minute = 60;

            long second = 60;

            long mmcond = 1000;

            long currTime = System.currentTimeMillis(); //当前时间

            long lastTime = absFile.lastModified(); //文件被最后一次修改的时间

            //时间差

            long diffen = currTime - lastTime;

            // 定义指定天数删除时间
            long thDay = day * hour * minute * second * mmcond;

            if (diffen > thDay) { // 测试大于3分钟文件夹删除

                if (absFile.isDirectory()) {
                    info(absFile, day);

//                    absFile.delete();
                }

//                if (!f.getName().endsWith("gz")) {
//                    continue;
//                }

                absFile.delete();
            }
        }
    }

}
